package com.lianjia.analysis.service;

import com.github.abel533.echarts.Option;
import com.lianjia.analysis.model.HouseInfo;

import java.util.List;
import java.util.Map;

/**
 * 房价分析服务接口
 */
public interface HousePriceAnalysisService {

    /**
     * 获取所有城市列表
     */
    List<String> getAllCities();

    /**
     * 获取城市房源数量统计
     */
    Map<String, Integer> getCityHouseCount();

    /**
     * 获取城市房价均价统计
     */
    Map<String, Double> getCityAveragePrice();

    /**
     * 获取城市房价中位数统计
     */
    Map<String, Double> getCityMedianPrice();

    /**
     * 获取城市房价区间分布
     */
    Map<String, Map<String, Integer>> getCityPriceDistribution();

    /**
     * 获取城市面积区间分布
     */
    Map<String, Map<String, Integer>> getCityAreaDistribution();

    /**
     * 获取城市户型分布
     */
    Map<String, Map<String, Integer>> getCityLayoutDistribution();

    /**
     * 获取城市朝向分布
     */
    Map<String, Map<String, Integer>> getCityOrientationDistribution();

    /**
     * 获取城市装修情况分布
     */
    Map<String, Map<String, Integer>> getCityDecorationDistribution();

    /**
     * 获取城市楼层分布
     */
    Map<String, Map<String, Integer>> getCityFloorDistribution();

    /**
     * 获取价格与面积散点图数据
     */
    Option getPriceAreaScatterData(String cityName);

    /**
     * 获取城市各区域均价排行
     */
    Option getCityDistrictPriceRanking(String cityName);

    /**
     * 获取城市价格趋势（按月）
     * 注：由于数据限制，此处模拟生成趋势数据
     */
    Option getCityPriceTrend(String cityName);

    /**
     * 根据条件查询房源信息
     */
    List<HouseInfo> searchHouses(String cityName, Double minPrice, Double maxPrice, 
                                Double minArea, Double maxArea, String layout, String location);

    /**
     * 获取指定城市的区域列表
     */
    List<String> getDistrictsByCity(String cityName);

    /**
     * 获取指定城市的平均面积
     */
    double getCityAverageArea(String cityName);

    /**
     * 获取指定城市各区域的房源数量
     */
    Map<String, Integer> getDistrictHouseCounts(String cityName);
} 